import { addLog } from './log.js';

// 获取摄像头视频流的函数
function setupCamera(videoElementId, drawerElementId) {
    const $videoElement = $(videoElementId); // 获取视频元素
    const $drawerElement = $(drawerElementId); // 获取抽屉元素

    // 请求访问用户摄像头，指定视频流的分辨率
    navigator.mediaDevices.getUserMedia({
        video: {
            width: 1920,  // 强制宽度为1280
            height: 1080  // 强制高度为960
        },
        audio: true
    })
    .then(stream => {
        const videoTrack = stream.getVideoTracks()[0];
        const settings = videoTrack.getSettings();

        // 打印实际的视频分辨率
        addLog(`实际视频宽:${settings.width}`);
        addLog(`实际视频高:${settings.height}`);

        // 如果实际分辨率不等于1080P，打印警告
        if (settings.width !== 1920 || settings.height !== 1080) {
            addLog('实际分辨率不是 1080P，可能是设备不支持该分辨率');
            
            const $cameraContainer = $('#camera-container'); // 获取容器元素
            // 设置camera-container容器的宽高为实际视频流分辨率
            $cameraContainer.css({
                width: settings.width + 'px',
                height: settings.height + 'px'
            });

        }

        // 将视频流绑定到 <video> 元素
        $videoElement[0].srcObject = stream;  

        // 摄像头加载完成后显示抽屉
        $drawerElement.css('display', 'block');
    })
    .catch(err => {
        console.error('访问摄像头失败:', err);
    });
}

// 导出模块
export { setupCamera };
